package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.ZonaEmpleadoDAOSQLServer;
import co.inventario.datos.sqlserver.ZonaDAOSQLServer;
import co.inventario.datos.sqlserver.EmpleadoDAOSQLServer;
import co.inventario.entidad.ZonaEmpleadoDTO;
import co.inventario.entidad.ZonaDTO;
import co.inventario.entidad.EmpleadoDTO;

public class ZonaEmpleadoNegocio {
	
	public void crear(ZonaEmpleadoDTO zonaEmpleadoDTO, Connection connection) throws Exception, SQLException {
		ZonaEmpleadoDAOSQLServer zonaEmpleadoDAOSQLServer = new ZonaEmpleadoDAOSQLServer();
		ZonaEmpleadoDTO zonaEmpleadoDTOConsultado = zonaEmpleadoDAOSQLServer.consultarPorZona(zonaEmpleadoDTO, connection);
		if (zonaEmpleadoDTOConsultado == null) {
			zonaEmpleadoDAOSQLServer.crear(zonaEmpleadoDTO, connection);
		} else {
			throw new Exception("La zona del empleado que intenta crear, ya existe.");
		}
	}

	public void actualizar(ZonaEmpleadoDTO zonaEmpleadoDTO, Connection connection) throws Exception, SQLException {
		ZonaEmpleadoDAOSQLServer zonaEmpleadoDAOSQLServer = new ZonaEmpleadoDAOSQLServer();
		ZonaEmpleadoDTO zonaEmpleadoDTOConsultado = zonaEmpleadoDAOSQLServer.consultarPorZona(zonaEmpleadoDTO, connection);
		if (zonaEmpleadoDTOConsultado != null) {
			zonaEmpleadoDAOSQLServer.actualizar(zonaEmpleadoDTO, connection);
		} else {
			throw new Exception("La zona del empleado que intenta actualizar, no existe.");
		}
	}

	public ZonaEmpleadoDTO consultarPorCodigo(ZonaEmpleadoDTO zonaEmpleadoDTO, Connection connection) throws Exception, SQLException {
		ZonaEmpleadoDAOSQLServer zonaEmpleadoDAOSQLServer = new ZonaEmpleadoDAOSQLServer();
		ZonaEmpleadoDTO zonaEmpleadoDTOConsultado = zonaEmpleadoDAOSQLServer.consultarPorCodigo(zonaEmpleadoDTO, connection);
		return zonaEmpleadoDTOConsultado;
	}

	public ArrayList<ZonaEmpleadoDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		ZonaEmpleadoDAOSQLServer zonaEmpleadoDAOSQLServer = new ZonaEmpleadoDAOSQLServer();
		ArrayList<ZonaEmpleadoDTO> zonaEmpleadoDTOLista = zonaEmpleadoDAOSQLServer.consultarTodo(connection);
		ZonaDAOSQLServer zonaDAOSQLServer = new ZonaDAOSQLServer();
		ZonaDTO zonaDTO = null;
		EmpleadoDAOSQLServer empleadoDAOSQLServer = new EmpleadoDAOSQLServer();
		EmpleadoDTO empleadoDTO = null;
		for (ZonaEmpleadoDTO zonaEmpleadoDTO : zonaEmpleadoDTOLista) {
			zonaDTO = zonaDAOSQLServer.consultarPorCodigo(zonaEmpleadoDTO.getZonaDTO(), connection);
			zonaEmpleadoDTO.setZonaDTO(zonaDTO);
			empleadoDTO = empleadoDAOSQLServer.consultarPorCodigo(zonaEmpleadoDTO.getEmpleadoDTO(), connection);
			zonaEmpleadoDTO.setEmpleadoDTO(empleadoDTO);
		}
		return zonaEmpleadoDTOLista;
	}
	
}
